Crate signal_hook_async_std[−][src]
Expand description
A module for integrating signal handling with the async-std runtime.
This provides the Signals
struct which acts as a
[Stream
] of signals.
Example
use std::io::Error;
use async_std::prelude::*;
use signal_hook::consts::signal::*;
use signal_hook_async_std::Signals;
async fn handle_signals(mut signals: Signals) {
while let Some(signal) = signals.next().await {
match signal {
SIGHUP => {
// Reload configuration
// Reopen the log file
}
SIGTERM | SIGINT | SIGQUIT => {
// Shutdown the system;
},
_ => unreachable!(),
}
}
}
#[async_std::main]
async fn main() -> Result<(), Error> {
let signals = Signals::new(&[SIGHUP, SIGTERM, SIGINT, SIGQUIT])?;
let handle = signals.handle();
let signals_task = async_std::task::spawn(handle_signals(signals));
// Execute your main program logic
// Terminate the signal stream.
handle.close();
signals_task.await;
Ok(())
}
Structs
An asynchronous [Stream
] of arriving signals.
Type Definitions
Simplified version of the signals stream.